#include "math/math.h"
#include "util/utils.h"
#include <sstream>
NS_MATH_BEGIN
template<typename T>
std::string TypeCheckMsg(const std::string& name)
{
	std::string str = "size of type ";
	str += name;
	str += " : ";
	std::stringstream ss;
	ss<<sizeof(T);
	std::string tmp;
	ss>>tmp;
	str += tmp;
	return str;
}

void MathTypeCheck()
{
	using namespace xphysics::math;
	using namespace xphysics::util;

	Logger& logger = Thread::this_logger();

	logger.LogMessage(TypeCheckMsg<char>("char"));
	logger.LogMessage(TypeCheckMsg<size_t>("size_t"));
	logger.LogMessage(TypeCheckMsg<bool>("bool"));
	logger.LogMessage(TypeCheckMsg<short int>("short int"));
	logger.LogMessage(TypeCheckMsg<int>("int"));
	logger.LogMessage(TypeCheckMsg<float>("float"));
	logger.LogMessage(TypeCheckMsg<double>("double"));
	logger.LogMessage(TypeCheckMsg<long double>("long double"));
	logger.LogMessage(TypeCheckMsg<complex<float> >("complex<float>"));
	logger.LogMessage(TypeCheckMsg<complex<double> >("complex<double>"));
	logger.LogMessage(TypeCheckMsg<void* >("void*"));
}

NS_MATH_END